# basic input variables¶

This document lists and provides the description of the name (keywords) of the basic input variables to be used in the input file for the abinit executable.

## accuracy¶

Mnemonics: ACCURACY
Mentioned in topic(s): topic_Planewaves, topic_SCFControl
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [17/1053] in all abinit tests, [3/133] in abinit tutorials

Allows to tune the accuracy of a calculation by setting automatically the variables according to the following table:

accuracy 1 2 3 4 5 6
ecut E_min E_med E_med E_max E_max E_max
pawecutdg ecut ecut 1.2 * ecut 1.5 * ecut 2 * ecut 2 * ecut
fband 0.5 0.5 0.5 0.5 0.75 0.75
boxcutmin 1.5 1.8 1.8 2.0 2.0 2.0
bxctmindg 1.5 1.8 1.8 2.0 2.0 2.0
pawxcdev 1 1 1 1 2 2
pawmixdg 0 0 0 0 1 1
pawovlp 10 7 7 5 5 5
pawnhatxc 0 1 1 1 1 1
tolvrs 1.0d-3 1.0d-5 1.0d-7 1.0d-9 1.0d-10 1.0d-12
tolmxf 1.0d-3 5.0d-4 1.0d-4 5.0d-5 1.0d-6 1.0d-6
optforces 1 1 2 2 2 2
timopt 0 0 1 1 1 1
npulayit 4 7 7 7 15 15
nstep 30 30 30 30 50 50
prteig 0 0 1 1 1 1
prtden 0 0 1 1 1 1

accuracy = 4 corresponds to the default tuning of ABINIT. It is already a very accurate tuning. For a parallel calculation, timopt is enforced to be 0. E_min, E_med and E_max may be read from the pseudopotential file (available only for XML PAW atomic data files). If E_min, E_med and E_max are not given in the pseudopotential file, ecut must be given in the input file and E_max=E_med=E_max=ecut. If the user wants to modify one of the input variable automatically tuned by accuracy, they must put it in the input file. The other input variables automatically tuned by accuracy will not be affected. accuracy = 0 means that this input variable is deactivated.

## acell¶

Mnemonics: CELL lattice vector scaling
Characteristics: EVOLVING, LENGTH
Mentioned in topic(s): topic_UnitCell
Variable type: real
Dimensions: (3)
Commentdims: represented internally as acell(3,nimage)
Default value: 3 * 1
Added in version: before_v9

Test list (click to open). Very frequently used, [1043/1053] in all abinit tests, [126/133] in abinit tutorials

Gives the length scales by which dimensionless primitive translations (rprim) are to be multiplied. By default, given in Bohr atomic units (1 Bohr=0.5291772108 Angstroms), although Angstrom can be specified, if preferred, since acell has the LENGTH characteristics. See further description of acell related to the rprim input variable, the scalecart input variable, and the associated internal %rprimd input variable.

Note that acell is NOT the length of the conventional orthogonal basis vectors, but the scaling factors of the primitive vectors. Use scalecart to scale the cartesian coordinates.

## angdeg¶

Mnemonics: ANGles in DEGrees
Characteristics: INPUT_ONLY
Mentioned in topic(s): topic_UnitCell
Variable type: real
Dimensions: (3)
Default value: None
Comment: deduced from ‘rprim
Added in version: before_v9

Test list (click to open). Moderately used, [60/1053] in all abinit tests, [1/133] in abinit tutorials

Gives the angles between directions of primitive vectors of the unit cell (in degrees), as an alternative to the input array rprim. Will be used to set up rprim, that, together with the array acell, will be used to define the primitive vectors.

• angdeg(1) is the angle between the 2nd and 3rd vectors,
• angdeg(2) is the angle between the 1st and 3rd vectors,
• angdeg(3) is the angle between the 1st and 2nd vectors,

If the three angles are equal within 1.0d-12 (except if they are exactly 90 degrees), the three primitive vectors are chosen so that the trigonal symmetry that exchange them is along the z cartesian axis:

R1 = ( a,    0,           c)
R2 = (-a/2,  sqrt(3)/2*a, c)
R3 = (-a/2, -sqrt(3)/2*a, c)


where a 2 + c 2 = 1.0 If the angles are not all equal (or if they are all 90 degrees), one will have the following generic form:

• R1 = (1, 0, 0)
• R2 = (a, b, 0)
• R3 = (c, d, e)

where each of the vectors is normalized, and form the desired angles with the others.

## ecut¶

Mnemonics: Energy CUToff
Characteristics: ENERGY
Mentioned in topic(s): topic_Planewaves
Variable type: real
Dimensions: scalar
Default value: None
Added in version: before_v9

Test list (click to open). Very frequently used, [1053/1053] in all abinit tests, [133/133] in abinit tutorials

Used to define the kinetic energy cutoff which controls the number of planewaves at given k point. The allowed plane waves are those with kinetic energy lower than ecut, which translates to the following constraint on the planewave vector $\vec{G}$ in reciprocal space

\frac{1}{2}(2\pi)^2 (\vec{k}+\vec{G})^2 < \text{ecut}.

All planewaves inside this basis sphere centered at k are included in the basis (except if dilatmx is defined). The cutoff can be specified in Ha units (the default), Ry, eV or Kelvin, since ecut has the ENERGY characteristics. (1 Ha = 27.2113845 eV)

This is the single parameter which can have an enormous effect on the quality of a calculation; basically the larger ecut is, the better converged the calculation is. For fixed geometry, the total energy MUST always decrease as ecut is raised because of the variational nature of the problem.

Usually one runs at least several calculations at various ecut to investigate the convergence needed for reliable results.

For k-points whose coordinates are build from 0 or ½, the implementation of time-reversal symmetry that links coefficients of the wavefunctions in reciprocal space has been realized. See the input variable istwfk. If activated (which corresponds to the default mode), this input variable istwfk will allow to divide the number of plane wave (npw) treated explicitly by a factor of two. Still, the final result should be identical with the ‘full’ set of plane waves.

See the input variable ecutsm, for the smoothing of the kinetic energy, needed to optimize unit cell parameters.

## einterp¶

Mnemonics: Electron bands INTERPolation
Mentioned in topic(s): topic_ElecBandStructure, topic_SelfEnergy
Variable type: real
Dimensions: (4)
Default value: [0, 0, 0, 0]
Added in version: before_v9

Test list (click to open). Rarely used, [3/1053] in all abinit tests, [0/133] in abinit tutorials

This variable activates the interpolation of the electronic eigenvalues. It can be used to interpolate KS eigenvalues at the end of the GS run or to interpolate GW energies in sigma calculations (optdriver = 4). The k-path can be specified with kptbounds and nkpath. einterp consists of 4 entries. The first element specifies the interpolation method.

• 0 → No interpolation (default)
• 1 → Star-function interpolation (Shankland-Koelling-Wood Fourier interpolation scheme, see [Pickett1988]

The meaning of the other entries depend on the interpolation technique selected. In the case of star-function interpolation:

• einterp(2): Number of star-functions per ab-initio k-point
• einterp(3): If non-zero, activate Fourier filtering according to Eq 9 of [Uehara2000]. In this case, rcut is given by einterp(2) * Rmax where Rmax is the maximum length of the lattice vectors included in the star expansion
• einterp(4): Used if einterp(3) /= 0. It defines rsigma in Eq 9

## iscf¶

Mnemonics: Integer for Self-Consistent-Field cycles
Mentioned in topic(s): topic_SCFAlgorithms, topic_TDDFT, topic_ElecBandStructure
Variable type: integer
Dimensions: scalar
Default value: 17 if %usepaw == 1, 0 if usewvl == 1, 7 otherwise.

Added in version: before_v9

Test list (click to open). Moderately used, [327/1053] in all abinit tests, [50/133] in abinit tutorials

Controls the self-consistency algorithm.

Positive values correspond to the usual choice for doing the usual ground state (GS) calculations or for structural relaxations, where the potential has to be determined self-consistently while negative values correspond to non-self-consistent calculations.

Different SCF algorithms (> 0) can be selected:

• 0 → SCF cycle, direct minimization scheme on the gradient of the wavefunctions. This algorithm is faster than diagonalisation and mixing but is working only for systems with a gap. It is implemented only on the wavelet basis set, when usewvl = 1.
• 1 → get the largest eigenvalue of the SCF cycle (DEVELOP option, used with irdwfk = 1 or irdwfq = 1)

• 2 → SCF cycle, simple mixing of the potential with the preconditioned potential residual (in the usual case, the latter is defined by diemix, diemac and dielng)

• 3 → SCF cycle, Anderson mixing of the potential
• 4 → SCF cycle, Anderson mixing of the potential based on the two previous iterations
• 5 → SCF cycle, CG based on the minim. of the energy with respect to the potential
• 6 → SCF cycle, CG based on the minim. of the energy with respect to the potential (alternate algo., DEVELOP)
• 7 → SCF cycle, Pulay mixing of the potential based on the npulayit previous iterations
• 12 → SCF cycle, simple mixing of the density
• 13 → SCF cycle, Anderson mixing of the density
• 14 → SCF cycle, Anderson mixing of the density based on the two previous iterations
• 15 → SCF cycle, CG based on the minim. of the energy with respect to the density
• 16 → SCF cycle, CG based on the minim. of the energy with respect to the potential (alternate algo., DEVELOP)
• 17 → SCF cycle, Pulay mixing of the density based on the npulayit previous iterations

Warning

Other positive values, including zero ones, are not allowed.

Such algorithms for treating the “SCF iteration history” should be coupled with accompanying algorithms for the SCF “preconditioning”. See the input variable iprcel. The default value iprcel = 0 is often a good choice, but for inhomogeneous systems, you might gain a lot with iprcel = 45.

(Warning: if iscf > 10, at present (v4.6), the energy printed at each SCF cycle is not variational - this should not affect the other properties, and at convergence, all values are OK)

• In the norm-conserving case, the default option is iscf = 7, which is a compromise between speed and reliability. The value iscf = 2 is safer but slower.
• In the PAW case, default option is iscf = 17. In PAW you have the possibility to mix density/potential on the fine or coarse FFT grid (see pawmixdg).
• Note that a Pulay mixing (iscf = 7 or 17) with npulayit = 1 (resp. 2) is equivalent to an Anderson mixing with iscf = 3 or 13 (resp. 4 or 14).
• Also note that:
• when mixing is done on potential (iscf < 10), total energy is computed by “direct” decomposition.
• when mixing is done on density (iscf >= 10), total energy is computed by “double counting” decomposition. “Direct” and “double counting” decomposition of energy are equal when SCF cycle is converged. Note that, when using GGA XC functionals, these decompositions of energy can be slightly different due to imprecise computation of density gradients on FFT grid (difference decreases as size of FFT grid increases - see ecut for NC pseudopotentials, pawecutdg for PAW).

Other (negative) options:

• -2 → a non-self-consistent calculation is to be done; in this case an electron density rho(r) on a real space grid (produced in a previous calculation) will be read from a disk file (automatically if ndtset = 0, or according to the value of getden if ndtset/=0). The name of th density file must be given as indicated here. iscf = -2 would be used for band structure calculations, to permit computation of the eigenvalues of occupied and unoccupied states at arbitrary k points in the fixed self consistent potential produced by some integration grid of k points. Due to this typical use, ABINIT insist that either prtvol > 2 or prteig does not vanish when there are more than 50 k points. To compute the eigenvalues (and wavefunctions) of unoccupied states in a separate (non-selfconsistent) run, the user should save the self-consistent rho(r) and then run iscf = -2 for the intended set of k-points and bands. To prepare a run with iscf = -2, a density file can be produced using the parameter prtden (see its description). When a self-consistent set of wavefunctions is already available, abinit can be used with nstep = 0 (see Test_v2/t47.in), and the adequate value of prtden.

• -3 → like -2, but initialize occ and wtk, directly or indirectly (using ngkpt or kptrlatt) depending on the value of occopt. For GS, this option might be used to generate Density-of-states (thanks to prtdos), or to produce STM charge density map (thanks to prtstm). For RF, this option is needed to compute the response to ddk perturbation.

• -1 → like -2, but the non-self-consistent calculation is followed by the determination of excited states within TDDFT. This is only possible for nkpt = 1, with kpt = 0 0 0. Note that the oscillator strength needs to be defined with respect to an origin of coordinate, thanks to the input variable boxcenter. The maximal number of Kohn-Sham excitations to be used to build the excited state TDDFT matrix can be defined by td_mexcit, or indirectly by the maximum Kohn-Sham excitation energy td_maxene.

## ixc¶

Mnemonics: Index of eXchange-Correlation functional
Mentioned in topic(s): topic_xc, topic_Hybrids, topic_TDDFT
Variable type: integer
Dimensions: scalar
Default value: 1
Comment: Default corresponds to Teter parametrization. However, if all the pseudopotentials have the same value of pspxc, the initial value of ixc will be that common value
Added in version: before_v9

Test list (click to open). Moderately used, [405/1053] in all abinit tests, [49/133] in abinit tutorials

Controls the choice of exchange and correlation (xc). The list of XC functionals is given below. Positive values are for ABINIT native library of XC functionals, while negative values are for calling the much wider set of functionals from the ETSF LibXC library (by M. Marques), available at the LibXC home page Note that the choice made here should preferably agree with the choice made in generating the original pseudopotential, except for ixc = 0 (usually only used for debugging). A warning is issued if this is not the case. Unfortunately, pseudopotential (or PAW) generators for hybrid functionals and mGGA are currently under development, so that one usually uses GGA or LDA pseudopotentials instead. The error should be limited when GGA or LDA pseudopotentials with semi-core states are used. Still this is a non- controlled error. Moreover, the choices ixc = 1, 2, 3 and 7 are fits to the same data, from Ceperley-Alder, and are rather similar, at least for spin-unpolarized systems. The choice between the non-spin-polarized and spin-polarized case is governed by the value of nsppol (see below).

Native ABINIT XC functionals

NOTE: in the implementation of the spin-dependence of these functionals, and in order to avoid divergences in their derivatives, the interpolating function between spin-unpolarized and fully-spin-polarized function has been slightly modified, by including a zeta rescaled by 1.d0-1.d-6. This should affect total energy at the level of 1.d-6Ha, and should have an even smaller effect on differences of energies, or derivatives. The value ixc = 10 is used internally: gives the difference between ixc = 7 and ixc = 9, for use with an accurate RPA correlation energy.

• 0 → NO xc.

• 1 → LDA or LSD, Teter Pade parametrization (4/93, published in [Goedecker1996], which reproduces Perdew-Wang 92 [Perdew1992a] (which reproduces Ceperley-Alder [Ceperley1980]!).

• 2 → LDA, Perdew-Zunger-Ceperley-Alder (no spin-polarization) [Perdew1981]
• 3 → LDA, old Teter rational polynomial parametrization (4/91) fit to Ceperley-Alder data (no spin-polarization) [Ceperley1980]
• 4 → LDA, Wigner functional (no spin-polarization)
• 5 → LDA, Hedin-Lundqvist functional (no spin-polarization) [Hedin1971]
• 6 → LDA, “X-alpha” functional (no spin-polarization)
• 7 → LDA or LSD, Perdew-Wang 92 functional [Perdew1992a]
• 8 → LDA or LSD, x-only part of the Perdew-Wang 92 functional [Perdew1992a]
• 9 → LDA or LSD, x- and RPA correlation part of the Perdew-Wang 92 functional [Perdew1992a]

• 11 → GGA, Perdew-Burke-Ernzerhof GGA functional [Perdew1996]

• 12 → GGA, x-only part of Perdew-Burke-Ernzerhof GGA functional [Perdew1996]
• 13 → GGA potential of van Leeuwen-Baerends [VanLeeuwen1994], while for energy, Perdew-Wang 92 functional [Perdew1992a]
• 14 → GGA, revPBE of [Zhang1998]
• 15 → GGA, RPBE of [Hammer1999]
• 16 → GGA, HTCH93 of [Hamprecht1998]
• 17 → GGA, HTCH120 of [Boese2000] - The usual HCTH functional.
• 18 → (NOT AVAILABLE: used internally for GGA BLYP pseudopotentials from [Krack2005], available from the CP2K repository - use the LibXC instead, with ixc = -106131.
• 19 → (NOT AVAILABLE: used internally for GGA BP86 pseudopotentials from [Krack2005], available from the CP2K repository - use the LibXC instead, with ixc = -106132.

• 20 → Fermi-Amaldi xc ( -1/N Hartree energy, where N is the number of electrons per cell; G=0 is not taken into account however), for TDDFT tests. No spin-pol. Does not work for RF.

• 21 → same as 20, except that the xc-kernel is the LDA ( ixc = 1) one, for TDDFT tests.
• 22 → same as 20, except that the xc-kernel is the Burke-Petersilka-Gross hybrid, for TDDFT tests.
• 23 → GGA of [Wu2006].
• 24 → GGA, C09x exchange of [Cooper2010].
• 26 → GGA, HTCH147 of [Boese2000].
• 27 → GGA, HTCH407 of [Boese2001].
• 28 → (NOT AVAILABLE: used internally for GGA OLYP pseudopotentials from [Krack2005], available from the CP2K repository - use the LibXC instead, with ixc = -110131.

• 40 → Hartree-Fock

• 41 → PBE0, [Adamo1999].
• 42 → PBE0-⅓, [Guido2013].

ETSF Lib XC functionals

Note that you must compile ABINIT with the LibXC plug-in in order to be able to access these functionals. The LibXC functionals are accessed by negative values of ixc . The LibXC contains functional forms for either exchange-only functionals, correlation-only functionals, or combined exchange and correlation functionals. Each of them is to be specified by a three-digit number. In case of a combined exchange and correlation functional, only one such three-digit number has to be specified as value of ixc , with a minus sign (to indicate that it comes from the LibXC). In the case of separate exchange functional (let us represent its identifier by XXX) and correlation functional (let us represent its identified by CCC), a six-digit number will have to be specified for ixc , by concatenation, be it XXXCCC or CCCXXX. As an example, ixc = -020 gives access to the Teter93 LDA, while ixc = -101130 gives access to the PBE GGA. In version 0.9 of LibXC (December 2008), there are 16 three-dimensional (S)LDA functionals (1 for X, 14 for C, 1 for combined XC), and there are 41 three-dimensional GGA (23 for X, 8 for C, 10 for combined XC). Note that for a meta-GGA, the kinetic energy density is needed. This means having usekden = 1.

(S)LDA functionals (do not forget to add a minus sign, as discussed above)

GGA functionals (do not forget to add a minus sign, as discussed above)

• 084 → XC_GGA_C_OP_XALPHA one-parameter progressive functional (G96 version) [Tsuneda1999]
• 085 → XC_GGA_C_OP_G96 one-parameter progressive functional (G96 version) [Tsuneda1999]
• 086 → XC_GGA_C_OP_PBE one-parameter progressive functional (PBE version) [Tsuneda1999]
• 087 → XC_GGA_C_OP_B88 one-parameter progressive functional (B88 version) [Tsuneda1999]
• 088 → XC_GGA_C_FT97 Filatov & Thiel correlation [Filatov1997a] [Filatov1997]

Warning

this functional is not tested. Use at your own risks.

• 089 → XC_GGA_C_SPBE PBE correlation to be used with the SSB exchange [Swart2009]
• 090 → XC_GGA_X_SSB_SW Swart, Sola and Bickelhaupt correction to PBE [Swart2009a]
• 091 → XC_GGA_X_SSB [Swart2009]

Warning

This functional gives NaN on IBM (XG20130608).

Warning

This functional gives NaN on IBM (XG20130608).

Warning

This functional gives NaN on IBM (XG20130608).

• 147 → XC_GGA_C_WL Wilson & Levy [Wilson1990]
• 148 → XC_GGA_C_WI Wilson & Ivanov [Wilson1998]
• 149 → XC_GGA_X_MB88 Modified Becke 88 for proton transfer [Tognetti2009]
• 150 → XC_GGA_X_SOGGA Second-order generalized gradient approximation [Zhao2008]
• 151 → XC_GGA_X_SOGGA11 Second-order generalized gradient approximation 2011 [Peverati2011]
• 152 → XC_GGA_C_SOGGA11 Second-order generalized gradient approximation 2011 [Peverati2011]
• 153 → XC_GGA_C_WI0 Wilson & Ivanov initial version [Wilson1998]
• 154 → XC_GGA_XC_TH1 Tozer and Handy v. 1 [Tozer1998]

Warning

This functional is not tested. Use at your own risks.

• 155 → XC_GGA_XC_TH2 Tozer and Handy v. 2 [Tozer1998a]
• 156 → XC_GGA_XC_TH3 Tozer and Handy v. 3 [Handy1998]
• 157 → XC_GGA_XC_TH4 Tozer and Handy v. 4 [Handy1998]
• 158 → XC_GGA_X_C09X C09x to be used with the VdW of Rutgers-Chalmers [Cooper2010]
• 159 → XC_GGA_C_SOGGA11_X To be used with hyb_gga_x_SOGGA11-X [Peverati2011a]
• 161 → XC_GGA_XC_HCTH_93 HCTH functional fitted to 93 molecules [Hamprecht1998]
• 162 → XC_GGA_XC_HCTH_120 HCTH functional fitted to 120 molecules [Boese2000]
• 163 → XC_GGA_XC_HCTH_147 HCTH functional fitted to 147 molecules [Boese2000]
• 164 → XC_GGA_XC_HCTH_407 HCTH functional fitted to 407 molecules [Boese2001]
• 165 → XC_GGA_XC_EDF1 Empirical functionals from Adamson, Gill, and Pople [Adamson1998]
• 166 → XC_GGA_XC_XLYP XLYP functional [Xu2004a]
• 167 → XC_GGA_XC_B97 Becke 97 [Becke1997]
• 168 → XC_GGA_XC_B97_1 Becke 97-1 [Hamprecht1998] [Becke1997]
• 169 → XC_GGA_XC_B97_2 Becke 97-2 [Becke1997]
• 170 → XC_GGA_XC_B97_D Grimme functional to be used with C6 vdW term [Grimme2006]
• 171 → XC_GGA_XC_B97_K Boese-Martin for Kinetics [Boese2004]
• 172 → XC_GGA_XC_B97_3 Becke 97-3 [Keal2005]
• 173 → XC_GGA_XC_PBE1W Functionals fitted for water [Dahlke2005]
• 174 → XC_GGA_XC_MPWLYP1W Functionals fitted for water [Dahlke2005]
• 175 → XC_GGA_XC_PBELYP1W Functionals fitted for water [Dahlke2005]
• 176 → XC_GGA_XC_SB98_1a Schmider-Becke 98 parameterization 1a [Schmider1998]
• 177 → XC_GGA_XC_SB98_1b Schmider-Becke 98 parameterization 1b [Schmider1998]
• 178 → XC_GGA_XC_SB98_1c Schmider-Becke 98 parameterization 1c [Schmider1998]
• 179 → XC_GGA_XC_SB98_2a Schmider-Becke 98 parameterization 2a [Schmider1998]
• 180 → XC_GGA_XC_SB98_2b Schmider-Becke 98 parameterization 2b [Schmider1998]
• 181 → XC_GGA_XC_SB98_2c Schmider-Becke 98 parameterization 2c [Schmider1998]
• 183 → XC_GGA_X_OL2 Exchange form based on Ou-Yang and Levy v.2 [Fuentealba1995] [OuYang1991]
• 184 → XC_GGA_X_APBE mu fixed from the semiclassical neutral atom [Constantin2011]
• 186 → XC_GGA_C_APBE mu fixed from the semiclassical neutral atom [Constantin2011]
• 191 → XC_GGA_X_HTBS Haas, Tran, Blaha, and Schwarz [Haas2011]
• 192 → XC_GGA_X_AIRY Constantin et al based on the Airy gas [Constantin2009]
• 193 → XC_GGA_X_LAG Local Airy Gas [Vitos2000]
• 194 → XC_GGA_XC_MOHLYP Functional for organometallic chemistry [Schultz2005]
• 195 → XC_GGA_XC_MOHLYP2 Functional for barrier heights [Zheng2009]
• 196 → XC_GGA_XC_TH_FL Tozer and Handy v. FL [Tozer1997]
• 197 → XC_GGA_XC_TH_FC Tozer and Handy v. FC [Tozer1997]
• 198 → XC_GGA_XC_TH_FCFO Tozer and Handy v. FCFO [Tozer1997]
• 199 → XC_GGA_XC_TH_FCO Tozer and Handy v. FCO [Tozer1997]
• 200 → XC_GGA_C_OPTC Optimized correlation functional of Cohen and Handy [Cohen2001]
• (for MetaGGA and Hybrid functionals, with indices in the 200-499 range, see the later sections)
• 524 → XC_GGA_X_WPBEH short-range version of the PBE [Heyd2003]
• 525 → XC_GGA_X_HJS_PBE HJS screened exchange PBE version [Henderson2008]
• 526 → XC_GGA_X_HJS_PBE_SOL HJS screened exchange PBE_SOL version [Henderson2008]
• 527 → XC_GGA_X_HJS_B88 HJS screened exchange B88 version [Henderson2008]

Warning

This functional is not tested. Use at your own risks.

• 528 → XC_GGA_X_HJS_B97X HJS screened exchange B97x version [Henderson2008]
• 529 → XC_GGA_X_ITYH short-range recipe for exchange GGA functionals [Iikura2001]

Warning

This functional is not tested. Use at your own risks.

MetaGGA functionals (do not forget to add a minus sign, as discussed above). See [Sun2011] for the formulas.

• 202 → XC_MGGA_X_TPSS Tao, Perdew, Staroverov & Scuseria [Tao2003] [Perdew2004]
• 203 → XC_MGGA_X_M06L Zhao, Truhlar exchange [Zhao2006] [Zhao2007]
• 204 → XC_MGGA_X_GVT4 GVT4 (X part of VSXC) from van Voorhis and Scuseria [Voorhis1998]
• 205 → XC_MGGA_X_TAU_HCTH tau-HCTH from Boese and Handy [Boese2002]
• 207 → XC_MGGA_X_BJ06 Becke & Johnson correction to Becke-Roussel 89 [Becke2006]

Warning

This Vxc-only mGGA can only be used with a LDA correlation, typically Perdew-Wang 92 [Perdew1992a].

• 208 → XC_MGGA_X_TB09 Tran-blaha - correction to Becke & Johnson correction to Becke-Roussel 89 [Tran2009]

Warning

This Vxc-only mGGA can only be used with a LDA correlation, typically Perdew-Wang 92 [Perdew1992a].

• 209 → XC_MGGA_X_RPP09 Rasanen, Pittalis, and Proetto correction to Becke & Johnson [Rasanen2010]

Warning

This Vxc-only mGGA can only be used with a LDA correlation, typically Perdew-Wang 92 [Perdew1992a].

• 232 → XC_MGGA_C_VSXC VSxc from Van Voorhis and Scuseria (correlation part) [Voorhis1998]

Hybrid functionals (do not forget to add a minus sign, as discussed above).

• 402 → XC_HYB_GGA_XC_B3LYP The (in)famous B3LYP [Stephens1994]
• 406 → XC_HYB_GGA_XC_PBEH PBEH (PBE0) [Adamo1999] [Ernzerhof1999]
• 427 → XC_HYB_GGA_XC_HSE03 The 2003 version of the screened hybrid HSE (this case corresponds to hyb_range_fock=$\omega^{HF} = 0.15/\sqrt{2}$ and hyb_range_dft=$\omega^{PBE} = 0.15*(2.0)^{1/3}$ )
• 428 → XC_HYB_GGA_XC_HSE06 The 2006 version of the screened hybrid HSE (this case corresponds to hyb_range_fock=hyb_range_dft=$\omega^{HF} = \omega^{PBE} = 0.11$) [Heyd2003] [Heyd2006] [Krukau2006]

Warning

(The following section is taken from the LibXC sources. In ABINIT, we stick to the LibXC choice.)

Note that there is an enormous mess in the literature concerning the values of omega in HSE. This is due to an error in the original paper that stated that they had used $\omega=0.15$. This was in fact not true, and the real value used was $\omega^{HF} = 0.15 / \sqrt{2} \sim 0.1061$ and $\omega^{PBE} = 0.15 * (2.0)^{1/3} \sim 0.1890$.

In 2006 Krukau et al [Krukau2006] tried to clarify the situation, called HSE03 the above choice of parameters, and called HSE06 to the functional where $\omega^{HF}=\omega^{PBE}$. By testing several properties for atoms they reached the conclusion that the best value for $\omega=0.11$. Of course, codes are just as messy as the papers. In Quantum Espresso HSE06 has the value $\omega=0.106.$ VASP, on the other hand, uses for HSE03 the same value $\omega^{HF} = \omega^{PBE} = 0.3 (A^{-1}) \sim 0.1587$, and for HSE06 $\omega^{HF} = \omega^{PBE} = 0.2 (A^{-1}) \sim 0.1058$.

## jdtset¶

Mnemonics: index -J- for DaTaSETs
Characteristics: NO_MULTI
Mentioned in topic(s): topic_multidtset
Variable type: integer
Dimensions: (ndtset)
Default value: [ {‘start’: 1, ‘stop’: ‘ndtset’}; ->
Added in version: before_v9

Test list (click to open). Moderately used, [104/1053] in all abinit tests, [13/133] in abinit tutorials

Gives the dataset index of each of the datasets. This index will be used:

• to determine which input variables are specific to each dataset, since the variable names for this dataset will be made from the bare variable name concatenated with this index, and only if such a composite variable name does not exist, the code will consider the bare variable name, or even, the Default;
• to characterize output variable names, if their content differs from dataset to dataset;
• to characterize output files ( root names appended with _DSx where ‘x’ is the dataset index ).

The allowed index values are between 1 and 9999. An input variable name appended with 0 is not allowed. When ndtset == 0, this array is not used, and moreover, no input variable name appended with a digit is allowed. This array might be initialized thanks to the use of the input variable udtset. In this case, jdtset cannot be used.

## kpt¶

Mnemonics: K - PoinTs
Mentioned in topic(s): topic_k-points
Variable type: real
Dimensions: (3,nkpt)
Default value: [0, 0, 0]
Comment: Adequate for one molecule in a supercell
Added in version: before_v9

Test list (click to open). Very frequently used, [1043/1053] in all abinit tests, [133/133] in abinit tutorials

Contains the k points in terms of reciprocal space primitive translations (NOT in cartesian coordinates!). Needed ONLY if kptopt = 0, otherwise deduced from other input variables.

It contains dimensionless numbers in terms of which the cartesian coordinates would be: k_cartesian = k1*G1+k2*G2+k3*G3 where (k1,k2,k3) represent the dimensionless “reduced coordinates” and G1, G2, G3 are the cartesian coordinates of the primitive translation vectors. G1,G2,G3 are related to the choice of direct space primitive translation vectors made in rprim. Note that an overall norm for the k points is supplied by kptnrm. This allows one to avoid supplying many digits for the k points to represent such points as (1,1,1)/3. Note: one of the algorithms used to set up the sphere of G vectors for the basis needs components of k-points in the range [-1,1], so the remapping is easily done by adding or subtracting 1 from each component until it is in the range [-1,1]. That is, given the k point normalization kptnrm described below, each component must lie in [ -kptnrm, kptnrm ]. Note: a global shift can be provided by %qptn Not read if kptopt/=0.

## kptnrm¶

Mnemonics: K - PoinTs NoRMalization
Mentioned in topic(s): topic_k-points
Variable type: real
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Moderately used, [106/1053] in all abinit tests, [0/133] in abinit tutorials

Establishes a normalizing denominator for each k point. Needed only if kptopt<=0, otherwise deduced from other input variables. The k point coordinates as fractions of reciprocal lattice translations are therefore kpt(mu,ikpt)/ kptnrm . kptnrm defaults to 1 and can be ignored by the user. It is introduced to avoid the need for many digits in representing numbers such as ⅓. It cannot be smaller than 1.0

## kptopt¶

Mnemonics: KPoinTs OPTion
Mentioned in topic(s): topic_k-points, topic_ElecBandStructure
Variable type: integer
Dimensions: scalar
Default value: 4 if nspden == 4, 1 otherwise.

Added in version: before_v9

Test list (click to open). Very frequently used, [855/1053] in all abinit tests, [75/133] in abinit tutorials

Controls the set up of the k-points list. The aim will be to initialize, by straight reading or by a preprocessing approach based on other input variables, the following input variables, giving the k points, their number, and their weight: kpt, kptnrm, nkpt, and, for iscf/=-2, wtk.

Often, the k points will form a lattice in reciprocal space. In this case, one will also aim at initializing input variables that give the reciprocal of this k-point lattice, as well as its shift with respect to the origin: ngkpt or kptrlatt, as well as on nshiftk and shiftk.

A global additional shift can be provided by %qptn

The use of symmetries (spatial and/or time-reversal) is crucial to determine the action of kptopt .

• 0 → read directly nkpt, kpt, kptnrm and wtk.
• 1 → rely on ngkpt or kptrlatt, as well as on nshiftk and shiftk to set up the k points. Take fully into account the symmetry to generate the k points in the Irreducible Brillouin Zone only, with the appropriate weights. (This is the usual mode for GS calculations)

• 2 → rely on ngkpt or kptrlatt, as well as on nshiftk and shiftk to set up the k points. Take into account only the time-reversal symmetry: k points will be generated in half the Brillouin zone, with the appropriate weights. (This is the usual mode when preparing or executing a RF calculation at q=(0 0 0) without non-collinear magnetism)

• 3 → rely on ngkpt or kptrlatt, as well as on nshiftk and shiftk to set up the k points. Do not take into account any symmetry: k points will be generated in the full Brillouin zone, with the appropriate weights. (This is the usual mode when preparing or executing a RF calculation at non-zero q, or with non-collinear magnetism)

• 4 → rely on ngkpt or kptrlatt, as well as on nshiftk and shiftk to set up the k points. Take into account all the symmetries EXCEPT the time-reversal symmetry to generate the k points in the Irreducible Brillouin Zone, with the appropriate weights. This has to be used when performing calculations with non-collinear magnetism allowed (nspden = 4)

• A negative value → rely on kptbounds, and ndivsm (or ndivk) to set up a band structure calculation along different lines (allowed only for iscf == -2). The absolute value of kptopt gives the number of segments of the band structure. Weights are usually irrelevant with this option, and will be left to their default value.

In the case of a grid of k points, the auxiliary variables kptrlen, ngkpt and prtkpt might help you to select the optimal grid.

## natom¶

Mnemonics: Number of ATOMs
Mentioned in topic(s): topic_crystal, topic_SmartSymm
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Very frequently used, [1044/1053] in all abinit tests, [126/133] in abinit tutorials

Gives the total number of atoms in the unit cell. Default is 1 but you will obviously want to input this value explicitly. Note that natom refers to all atoms in the unit cell, not only to the irreducible set of atoms in the unit cell (using symmetry operations, this set allows one to recover all atoms). If you want to specify only the irreducible set of atoms, use the symmetriser, see the input variable natrd.

## nband¶

Mnemonics: Number of BANDs
Mentioned in topic(s): topic_BandOcc, topic_GW, topic_RPACorrEn, topic_Susceptibility
Variable type: integer
Dimensions: scalar
Default value: None
Comment: the estimated number of occupied bands +1 (TODO provide the mathematical formulation)
Added in version: before_v9

Test list (click to open). Very frequently used, [923/1053] in all abinit tests, [113/133] in abinit tutorials

Gives number of bands, occupied plus possibly unoccupied, for which wavefunctions are being computed along with eigenvalues. Note: if the parameter occopt (see below) is not set to 2, nband is a scalar integer, but if the parameter occopt is set to 2, then nband must be an array nband (nkpt* nsppol) giving the number of bands explicitly for each k point. This option is provided in order to allow the number of bands treated to vary from k point to k point. For the values of occopt not equal to 0 or 2, nband can be omitted. The number of bands will be set up thanks to the use of the variable fband. The present Default will not be used.

If nspinor is 2, nband must be even for each k point.

In the case of a GW calculation (optdriver = 3 or 4), nband gives the number of bands to be treated to generate the screening (susceptibility and dielectric matrix), as well as the self-energy. However, to generate the _KSS file (see kssform) the relevant number of bands is given by nbandkss.

## nbandhf¶

Mnemonics: Number of BANDs for (Hartree)-Fock exact exchange
Mentioned in topic(s): topic_Hybrids
Variable type: integer
Dimensions: scalar
Default value: None
Comment: the estimated number of occupied bands (TODO: provide the mathematical formulation)
Added in version: before_v9

Test list (click to open). Rarely used, [8/1053] in all abinit tests, [0/133] in abinit tutorials

Gives the maximum number of occupied bands with which Fock exact exchange is being computed for the wavefunctions.

## ndtset¶

Mnemonics: Number of DaTaSETs
Characteristics: NO_MULTI
Mentioned in topic(s): topic_multidtset
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Very frequently used, [723/1053] in all abinit tests, [86/133] in abinit tutorials

Gives the number of data sets to be treated. If 0, means that the multi-data set treatment is not used, so that the root filenames will not be appended with _DSx, where ‘x’ is the dataset index defined by the input variable jdtset, and also that input names with a dataset index are not allowed. Otherwise, ndtset = 0 is equivalent to ndtset = 1.

## ngkpt¶

Mnemonics: Number of Grid points for K PoinTs generation
Characteristics: INPUT_ONLY
Mentioned in topic(s): topic_k-points
Variable type: integer
Dimensions: (3)
Default value: [0, 0, 0]
Only relevant if: kptopt >=0,
The use of this variable forbids the use of: kptrlatt
Added in version: before_v9

Test list (click to open). Very frequently used, [618/1053] in all abinit tests, [113/133] in abinit tutorials

Used when kptopt >= 0, if kptrlatt has not been defined (kptrlatt and ngkpt are exclusive of each other). Its three positive components give the number of k points of Monkhorst-Pack grids (defined with respect to primitive axis in reciprocal space) in each of the three dimensions. ngkpt will be used to generate the corresponding kptrlatt input variable. The use of nshiftk and shiftk, allows one to generate shifted grids, or Monkhorst-Pack grids defined with respect to conventional unit cells.

When nshiftk = 1, kptrlatt is initialized as a diagonal (3x3) matrix, whose diagonal elements are the three values ngkpt (1:3). When nshiftk is greater than 1, ABINIT will try to generate kptrlatt on the basis of the primitive vectors of the k-lattice: the number of shifts might be reduced, in which case kptrlatt will not be diagonal anymore.

Monkhorst-Pack grids are usually the most efficient when their defining integer numbers are even. For a measure of the efficiency, see the input variable kptrlen.

## nkpath¶

Mnemonics: Number of K-points defining the PATH
Mentioned in topic(s): topic_k-points
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Rarely used, [2/1053] in all abinit tests, [0/133] in abinit tutorials

This variable is used to define the number of high-symmetry k-points in the kptbounds array when kptopt > 0. Historically, kptbounds is used in conjuction with a negative value of kptopt when performing a NSCF band structure calculation. In this case, the number of k-points in kptbounds is given by abs(kptopt) + 1. There are, however, other cases in which one has to specify a k-path in the input file in order to activate some kind of post- processing tool. Typical examples are the interpolation of the GW corrections at the end of the sigma run or the interpolation of the KS eigenvalues along a path at the end of the SCF run (see also einterp) In a nutshell, nkpath replaces kptopt when we are not performing a NSCF calculation. Note that, unlike kptopt, nkpath represents the total number of points in the kptbounds array.

## nkpt¶

Mnemonics: Number of K - Points
Mentioned in topic(s): topic_k-points
Variable type: integer
Dimensions: scalar
Default value: 1 if kptopt == 0, 0 otherwise.

Added in version: before_v9

Test list (click to open). Moderately used, [508/1053] in all abinit tests, [32/133] in abinit tutorials

If non-zero, nkpt gives the number of k points in the k point array kpt. These points are used either to sample the Brillouin zone, or to build a band structure along specified lines.

If nkpt is zero, the code deduces from other input variables (see the list in the description of kptopt) the number of k points, which is possible only when kptopt/=0. If kptopt/=0 and the input value of nkpt /=0, then ABINIT will check that the number of k points generated from the other input variables is exactly the same than nkpt .

If kptopt is positive, nkpt must be coherent with the values of kptrlatt, nshiftk and shiftk. For ground state calculations, one should select the k point in the irreducible Brillouin Zone (obtained by taking into account point symmetries and the time-reversal symmetry). For response function calculations, one should select k points in the full Brillouin zone, if the wavevector of the perturbation does not vanish, or in a half of the Brillouin Zone if q=0. The code will automatically decrease the number of k points to the minimal set needed for each particular perturbation.

If kptopt is negative, nkpt will be the sum of the number of points on the different lines of the band structure. For example, if kptopt = -3, one will have three segments; supposing ndivk is 10 12 17, the total number of k points of the circuit will be 10+12+17+1(for the final point)=40.

## nkpthf¶

Mnemonics: Number of K - Points for (Hartree) Fock exact exchange
Mentioned in topic(s): topic_Hybrids
Variable type: integer
Dimensions: scalar
Default value: None
Added in version: before_v9

Test list (click to open). Rarely used, [8/1053] in all abinit tests, [0/133] in abinit tutorials

nkpthf gives the number of k points used to sample the full Brillouin zone for the Fock exact exchange contribution. It is obtained from the specification of the wavefunction k point grid (see kptopt), possibly downfolded as specified by fockdownsampling.

## nshiftk¶

Mnemonics: Number of SHIFTs for K point grids
Mentioned in topic(s): topic_k-points
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Very frequently used, [531/1053] in all abinit tests, [104/133] in abinit tutorials

This parameter gives the number of shifted grids to be used concurrently to generate the full grid of k points. It can be used with primitive grids defined either from ngkpt or kptrlatt. The maximum allowed value of nshiftk is 8. The values of the shifts are given by shiftk.

## nsppol¶

Mnemonics: Number of SPin POLarization
Mentioned in topic(s): topic_spinpolarisation
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Moderately used, [209/1053] in all abinit tests, [19/133] in abinit tutorials

Give the number of INDEPENDENT spin polarisations, for which there are non- related wavefunctions. Can take the values 1 or 2.

If nsppol = 1, one has an unpolarized calculation (nspinor = 1, nspden = 1) or an antiferromagnetic system (nspinor = 1, nspden = 2), or a calculation in which spin up and spin down cannot be disentangled (nspinor = 2), that is, either non-collinear magnetism or presence of spin- orbit coupling, for which one needs spinor wavefunctions.

If nsppol = 2, one has a spin-polarized (collinear) calculation with separate and different wavefunctions for up and down spin electrons for each band and k point. Compatible only with nspinor == 1, nspden == 2. If nsppol = 2, one usually uses a metallic value for occopt, in order to let ABINIT find the magnetization. On the contrary, if occopt == 1 is used, the user has to impose the magnetization, using spinmagntarget, except for the case of a single isolated Hydrogen atom.

In the present status of development, with nsppol = 1, all values of ixc are allowed, while with nsppol = 2, some values of ixc might not be allowed (e.g. 2, 3, 4, 5, 6, 20, 21, 22 are not allowed).

See also the input variable nspden for the components of the density matrix with respect to the spin-polarization.

## nstep¶

Mnemonics: Number of (non-)self-consistent field STEPS
Mentioned in topic(s): topic_SCFControl
Variable type: integer
Dimensions: scalar
Default value: 30
Added in version: before_v9

Test list (click to open). Very frequently used, [988/1053] in all abinit tests, [117/133] in abinit tutorials

Gives the maximum number of cycles (or “iterations”) in a SCF or non-SCF run. Full convergence from random numbers is usually achieved in 12-20 SCF iterations. Each can take from minutes to hours. In certain difficult cases, usually related to a small or zero band gap or magnetism, convergence performance may be much worse. When the convergence tolerance tolwfr on the wavefunctions is satisfied, iterations will stop, so for well converged calculations you should set nstep to a value larger than you think will be needed for full convergence, e.g. if using 20 steps usually converges the system, set nstep to 30. For non-self-consistent runs ( iscf < 0) nstep governs the number of cycles of convergence for the wavefunctions for a fixed density and Hamiltonian.

NOTE that a choice of nstep = 0 is permitted; this will either read wavefunctions from disk (with irdwfk = 1 or irdwfq = 1, or non-zero getwfk or getwfq in the case of multi-dataset) and compute the density, the total energy and stop, or else (with all of the above vanishing) will initialize randomly the wavefunctions and compute the resulting density and total energy. This is provided for testing purposes. Also NOTE that nstep = 0 with irdwfk = 1 will exactly give the same result as the previous run only if the latter is done with iscf<10 (potential mixing). One can output the density by using prtden. The forces and stress tensor are computed with nstep = 0.

## nsym¶

Mnemonics: Number of SYMmetry operations
Mentioned in topic(s): topic_crystal, topic_GW
Variable type: integer
Dimensions: scalar
Default value: 0
Added in version: before_v9

Test list (click to open). Moderately used, [365/1053] in all abinit tests, [14/133] in abinit tutorials

Gives number of space group symmetries to be applied in this problem. Symmetries will be input in array “symrel” and (nonsymmorphic) translations vectors will be input in array “tnons”. If there is no symmetry in the problem then set nsym to 1, because the identity is still a symmetry. In case of a RF calculation, the code is able to use the symmetries of the system to decrease the number of perturbations to be calculated, and to decrease of the number of special k points to be used for the sampling of the Brillouin zone. After the response to the perturbations have been calculated, the symmetries are used to generate as many as possible elements of the 2DTE from those already computed.

Symmetry finder mode (Default mode). If nsym is 0, all the atomic coordinates must be explicitly given (one cannot use the atom manipulator neither the smart symmetrizer): the code will then find automatically the symmetry operations that leave the lattice and each atomic sublattice invariant. It also checks whether the cell is primitive (see chkprim). Note that the tolerance on symmetric atomic positions and lattice is rather stringent: for a symmetry operation to be admitted, the lattice and atomic positions must map on themselves within 1.0e-8.

The user is allowed to set up systems with non-primitive unit cells (i.e. conventional FCC or BCC cells, or supercells without any distortion). In this case, pure translations will be identified as symmetries of the system by the symmetry finder. Then, the combined “pure translation + usual rotation and inversion” symmetry operations can be very numerous. For example, a conventional FCC cell has 192 symmetry operations, instead of the 48 ones of the primitive cell. A maximum limit of 384 symmetry operations is hard-coded. This corresponds to the maximum number of symmetry operations of a 2x2x2 undistorted supercell. Going beyond that number will make the code stop very rapidly. If you want nevertheless, for testing purposes, to treat a larger number of symmetries, change maxnsym.

For GW calculation, the user might want to select only the symmetry operations whose non-symmorphic translation vector tnons is zero. This can be done with the help of the input variable symmorphi

## ntypat¶

Mnemonics: Number of TYPes of AToms
Characteristics: NO_MULTI
Mentioned in topic(s): topic_AtomTypes, topic_PseudosPAW, topic_crystal
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Very frequently used, [1034/1053] in all abinit tests, [126/133] in abinit tutorials

Gives the number of types of atoms in the unit cell. E.g. for a homopolar system (e.g. pure Si) ntypat is 1.

The code tries to read the same number of pseudopotential files. The first pseudopotential is assigned type number 1, and so on…

There is an exception in the case of alchemical mixing of potentials. In this case, the number of atomic types will differ from the number of pseudopotentials. See mixalch, npsp, ntypalch and %npspalch.

## occopt¶

Mnemonics: OCCupation OPTion
Mentioned in topic(s): topic_BandOcc, topic_STM
Variable type: integer
Dimensions: scalar
Default value: 1
Added in version: before_v9

Test list (click to open). Very frequently used, [563/1053] in all abinit tests, [61/133] in abinit tutorials

Controls how input parameters nband, occ, and wtk are handled.

• occopt = 0: All k points and spins have the same number of bands. All k points have the same occupancies of bands for a given spin (but these occupancies may differ for spin up and spin down - typical for ferromagnetic insulators). nband is given as a single number, and occ(nband * nsppol) is an array of nband * nsppol elements, read in by the code. The k point weights in array wtk(nkpt) are automatically normalized by the code to add to 1. They cannot differ for differing spins.

• occopt = 1: Same as occopt = 0, except that the array occ is automatically generated by the code, to give a semiconductor. An error occurs when filling cannot be done with occupation numbers equal to 2 or 0 in each k-point (non-spin-polarized case), or with occupation numbers equal to 1 or 0 in each k-point (spin-polarized case). If nsppol = 2 and occopt == 1 is used, the user has to impose the magnetization, using spinmagntarget, except for the case of a single isolated Hydrogen atom.

• occopt = 2: k points may optionally have different numbers of bands and different occupancies. nband(nkpt * nsppol) is given explicitly as an array of nkpt * nsppol elements. occ() is given explicitly for all bands at each k point, and eventually for each spin – the total number of elements is the sum of nband(ikpt) over all k points and spins. The k point weights wtk (nkpt) are NOT automatically normalized under this option.

• occopt = 3, 4, 5, 6 and 7: Metallic occupation of levels, using different occupation schemes (see below). The corresponding thermal broadening, or cold smearing, is defined by the input variable tsmear (see below: the variable xx is the energy in Ha, divided by tsmear) Like for occopt = 1, the variable occ is not read. All k points have the same number of bands, nband is given as a single number, read by the code. The k point weights in array wtk(nkpt) are automatically normalized by the code to add to 1.

• occopt = 3: Fermi-Dirac smearing (finite-temperature metal) Smeared delta function: 0.25/(cosh(xx/2.0)**2)

• occopt = 4: “Cold smearing” of N. Marzari (see his thesis work), with a=-.5634 (minimization of the bump) Smeared delta function: exp(-xx 2 )/sqrt(pi) * (1.5+xx*(-a*1.5+xx*(-1.0+a*xx)))

• occopt = 5: “Cold smearing” of N. Marzari (see his thesis work), with a=-.8165 (monotonic function in the tail) Same smeared delta function as occopt = 4, with different a.

• occopt = 6: Smearing of Methfessel and Paxton [Methfessel1989] with Hermite polynomial of degree 2, corresponding to “Cold smearing” of N. Marzari with a=0 (so, same smeared delta function as occopt = 4, with different a).

• occopt = 7: Gaussian smearing, corresponding to the 0 order Hermite polynomial of Methfessel and Paxton. Smeared delta function: 1.0*exp(-xx**2)/sqrt(pi)

• occopt = 8: Uniform smearing (the delta function is replaced by a constant function of value one over ]-½,½[ (with one-half value at the boundaries). Used for testing purposes only.

Note

One can use metallic occupation of levels in the case of a molecule, in order to avoid any problem with degenerate levels. However, it is advised NOT to use occopt = 6 (and to a lesser extent occopt = 4 and 5), since the associated number of electron versus the Fermi energy is NOT guaranteed to be a monotonic function. For true metals, AND a sufficiently dense sampling of the Brillouin zone, this should not happen, but be cautious ! As an indication of this problem, a small variation of input parameters might lead to a jump of total energy, because there might be two or even three possible values of the Fermi energy, and the bisection algorithm finds one or the other.

## rprim¶

Mnemonics: Real space PRIMitive translations
Characteristics: EVOLVING
Mentioned in topic(s): topic_UnitCell
Variable type: real
Dimensions: (3,3)
Commentdims: Internally, it is represented as rprim(3,3,nimage)
Default value: [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
Added in version: before_v9

Test list (click to open). Very frequently used, [848/1053] in all abinit tests, [120/133] in abinit tutorials

Give the three dimensionless primitive translations in real space, to be rescaled by acell and scalecart. The three first numbers are the coordinates of the first vector, the next three numbers are the coordinates of the second, and the last three the coordinates of the third. It is EVOLVING only if ionmov == 2 or 22 and optcell/=0, otherwise it is fixed.

If the Default is used, that is, rprim is the unity matrix, the three dimensionless primitive vectors are three unit vectors in cartesian coordinates. The coordinates (and hence the length) of each vector will be (possibly) multiplied by the corresponding acell value, then (possibly) stretched along the cartesian coordinates by the corresponding scalecart value, to give the dimensional primitive vectors, called %rprimd.

In the general case, the dimensional cartesian coordinates of the crystal primitive translations R1p, R2p and R3p, see %rprimd, are

where i=1,2,3 is the component of the primitive translation (i.e. x, y, and z).

The rprim variable, scaled by scalecart, is thus used to define directions of the primitive vectors, that will be multiplied (so keeping the direction unchanged) by the appropriate length scale acell(1), acell(2), or acell(3), respectively to give the dimensional primitive translations in real space in cartesian coordinates. Presently, it is requested that the mixed product (R1xR2).R3 is positive. If this is not the case, simply exchange a pair of vectors.

To be more specific, keeping the default value of scalecart = 1 to simplify the matter, rprim 1 2 3 4 5 6 7 8 9 corresponds to input of the three primitive translations R1=(1,2,3) (to be multiplied by acell(1)), R2=(4,5,6) (to be multiplied by acell(2)), and R3=(7,8,9) (to be multiplied by acell(3)). Note carefully that the first three numbers input are the first column of rprim , the next three are the second, and the final three are the third. This corresponds with the usual Fortran order for arrays. The matrix whose columns are the reciprocal space primitive translations is the inverse transpose of the matrix whose columns are the direct space primitive translations.

Alternatively to rprim , directions of dimensionless primitive vectors can be specified by using the input variable angdeg. This is especially useful for hexagonal lattices (with 120 or 60 degrees angles). Indeed, in order for symmetries to be recognized, rprim must be symmetric up to tolsym (1.0e-5 by default), inducing a specification such as

  rprim  0.86602  0.5  0.0
-0.86602  0.5  0.0
0.0      0.0  1.0


that can be avoided thanks to angdeg:

  angdeg 90 90 120


Note that the following might work as well:

  rprim  sqrt(0.75)  0.5  0.0
-sqrt(0.75)  0.5  0.0
0.0         0.0  1.0


Although the use of scalecart or acell is rather equivalent when the primitive vectors are aligned with the cartesian directions, it is not the case for non-orthogonal primitive vectors. In particular, beginners often make the error of trying to use acell to define primitive vectors in face- centered tetragonal lattice, or body-centered tetragonal lattice, or similarly in face or body-centered orthorhombic lattices. Let us take the example of a body-centered tetragonal lattice, that might be defined using the following (“a” and “c” have to be replaced by the appropriate conventional cell vector length):

  rprim  "a"      0        0
0      "a"       0
"a/2"   "a/2"    "c/2"
acell 3*1     scalecart 3*1    !  ( These are default values)


The following is a valid, alternative way to define the same primitive vectors:

  rprim   1        0       0
0        1       0
1/2      1/2     1/2
scalecart  "a"  "a"  "c"
acell 3*1    !  ( These are default values)


Indeed, the cell has been stretched along the cartesian coordinates, by “a”, “a” and “c” factors.

At variance, the following is WRONG:

  rprim   1       0       0
0       1       0
1/2     1/2     1/2
acell  "a"  "a"  "c"    !   THIS IS WRONG
scalecart 3*1    !  ( These are default values)


Indeed, the latter would correspond to:

  rprim  "a"      0       0
0      "a"      0
"c/2"   "c/2"   "c/2"
acell 3*1     scalecart 3*1    !  ( These are default values)


Namely, the third vector has been rescaled by “c”. It is not at all in the center of the tetragonal cell whose basis vectors are defined by the scaling factor “a”. As another difference between scalecart or acell, note that scalecart is INPUT_ONLY: its content will be immediately applied to rprim, at parsing time, and then scalecart will be set to the default values (3*1). So, in case scalecart is used, the echo of rprim in the output file is not the value contained in the input file, but the value rescaled by scalecart.

## rprimd¶

Mnemonics: Real space PRIMitive translations, Dimensional
Characteristics: INTERNAL_ONLY, EVOLVING
Mentioned in topic(s): topic_UnitCell
Variable type: real
Dimensions: (3,3)
Commentdims: Internally, it is represented as rprimd(3,3,nimage).
Default value: None
Added in version: before_v9

This internal variable gives the dimensional real space primitive vectors, computed from acell, scalecart, and rprim.

It is EVOLVING only if ionmov == 2 or 22 and optcell/=0, otherwise it is fixed.

## scalecart¶

Mnemonics: SCALE CARTesian coordinates
Characteristics: INPUT_ONLY
Mentioned in topic(s): topic_UnitCell
Variable type: real
Dimensions: (3)
Default value: 3 * 1
Added in version: before_v9

Test list (click to open). Rarely used, [5/1053] in all abinit tests, [0/133] in abinit tutorials

Gives the scaling factors of cartesian coordinates by which dimensionless primitive translations (in “rprim”) are to be multiplied. See the rprim input variable, the acell input variable, and the associated internal %rprimd internal variable. Especially useful for body-centered and face-centered tetragonal lattices, as well as body-centered and face-centered orthorhombic lattices, see %rprimd. Note that this input variable is INPUT_ONLY: its content will be immediately applied to rprim, at parsing time, and then scalecart will be set to the default values. So, it will not be echoed.

## shiftk¶

Mnemonics: SHIFT for K points
Mentioned in topic(s): topic_k-points
Variable type: real
Dimensions: (3,nshiftk)
Default value: None if nshiftk>1, [0.5, 0.5, 0.5] otherwise.

Added in version: before_v9

Test list (click to open). Very frequently used, [585/1053] in all abinit tests, [105/133] in abinit tutorials

It is used only when kptopt >= 0, and must be defined if nshiftk is larger than 1. shiftk (1:3,1:nshiftk) defines nshiftk shifts of the homogeneous grid of k points based on ngkpt or kptrlatt. The shifts induced by shiftk corresponds to the reduced coordinates in the coordinate system defining the k-point lattice. For example, if the k point lattice is defined using ngkpt, the point whose reciprocal space reduced coordinates are ( shiftk (1,ii)/ngkpt(1) shiftk (2,ii)/ngkpt(2) shiftk (3,ii)/ngkpt(3) ) belongs to the shifted grid number ii.

The user might rely on ABINIT to suggest suitable and efficient combinations of kptrlatt and shiftk . The procedure to be followed is described with the input variables kptrlen. In what follows, we suggest some interesting values of the shifts, to be used with even values of ngkpt. This list is much less exhaustive than the above-mentioned automatic procedure.

1) When the primitive vectors of the lattice do NOT form a FCC or a BCC lattice, the default (shifted) Monkhorst-Pack grids are formed by using nshiftk = 1 and shiftk 0.5 0.5 0.5. This is often the preferred k point sampling, as the shift improves the sampling efficiency. However, it can also break symmetry, if the 111 direction is not an axis of rotation, e.g. in tetragonal or hexagonal systems. Abinit will complain about this breaking, and you should adapt shiftk . For a non-shifted Monkhorst-Pack grid, use nshiftk = 1 and shiftk 0.0 0.0 0.0, which will be compatible with all symmetries, and is necessary for some features such as k-point interpolation.

2) When the primitive vectors of the lattice form a FCC lattice, with rprim

  0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0


the (very efficient) usual Monkhorst-Pack sampling will be generated by using nshiftk = 4 and shiftk

  0.5 0.5 0.5
0.5 0.0 0.0
0.0 0.5 0.0
0.0 0.0 0.5


3) When the primitive vectors of the lattice form a BCC lattice, with rprim

  -0.5  0.5  0.5
0.5 -0.5  0.5
0.5  0.5 -0.5


the usual Monkhorst-Pack sampling will be generated by using nshiftk = 2 and shiftk

  0.25  0.25  0.25
-0.25 -0.25 -0.25


However, the simple sampling nshiftk = 1 and shiftk 0.5 0.5 0.5 is excellent.

4) For hexagonal lattices with hexagonal axes, e.g. rprim

  1.0  0.0       0.0
-0.5  sqrt(3)/2 0.0
0.0  0.0       1.0


one can use nshiftk = 1 and shiftk 0.0 0.0 0.5

In rhombohedral axes, e.g. using angdeg 3*60., this corresponds to shiftk 0.5 0.5 0.5, to keep the shift along the symmetry axis.

## structure¶

Mnemonics: initialize the crystalline STRUCTURE from …
Mentioned in topic(s): topic_crystal
Variable type: string
Dimensions: scalar
Default value:
Added in version: 9.0.0

Test list (click to open). Moderately used, [267/1053] in all abinit tests, [34/133] in abinit tutorials

This variable provides a simplified interface to build the crystalline structure from an external file. The idea is to keep the geometry information separated from the input file so that one can perform multiple calculations in different input files sharing the same structure without having to copy & paste the description of the unit cell inside the input. The single source of truth is now given by an external file that can be easily shared. As a side effect one can easily restart structure relaxations in place by reading the structure from the output file of a previous run.

The structure variable is a string in the format filetype:filepath where:

• filetype specifies the format of the external file
• filepath gives the path to the file relative to the directory where the input file is located.

Variables such as natom, ntypat, typat and znucl are automatically initialized from the external file and need not to be specified in the ABINIT input.

At present (November 11, 2020 ), the allowed values for filetype are:

• abifile → An output file produced by Abinit (only netcdf files are supported for the time being)
• abivars → A txt input file with Abinit variables
• poscar → POSCAR files in VASP-5 format (element symbol after the atomic position is required).

Some examples will help clarify.

To read the structure from an external netcdf file produced by Abinit (e.g. out_GSR.nc) use the abifile prefix and the syntax:

structure "abifile:out_GSR.nc"


Other Abinit output files such as the WFK.nc, the DEN.nc and the HIST.nc file are supported as well e.g.

structure "abifile:out_HIST.nc"


In the case of structural relaxations, these files contain the final geometry (not necessarily relaxed within the given tolerance) hence structure can be used to perform an in-place restart by reading the output of a previous run.

To read the structure from an external file with the structure in Abinit format, use:

structure "abivars:my_text_file"


where my_text_file specifies the lattice in terms [[acell], (%rprimd or angdeg) while the atomic positions are specified with natom and the special variable xred_symbols that can only be used inside this external file.

# MgB2 lattice structure

acell   2*3.086  3.523 Angstrom

rprim   0.866025403784439  0.5  0.0
-0.866025403784439  0.5  0.0
0.0                0.0  1.0

natom   3

# Reduced positions followed by element symbol.

xred_symbols
0.0  0.0  0.0  Mg
1/3  2/3  0.5  B
2/3  1/3  0.5  B


To read the structure from an external POSCAR file, use:

structure "poscar:t04_POSCAR"


where t04_POSCAR is the name of external file.

Critical

Note that the Abinit parser does not support all the possible variants of the POSCAR format. More specifically, we assume a subset of the POSCAR specifications in VASP-5 format. This means that the list of element symbols must be present and written on a single line. Only the “direct” and “cartesian” keywords before the atomic positions are allowed (case insensitive).

A typical POSCAR file for hexagonal MgB2 looks like (ignore comments):

Mg1 B2                           # Title string (ignored by Abinit)
1.0                              # Scaling factor for lattice vectors.
2.672554  1.543000 0.000000      # Lattice vectors in Angstrom (NOTE: ABINIT uses BOHR by default)
-2.672554 1.543000 0.000000
0.000000  0.000000 3.523000
Mg B                             # List of element symbols
1 2                              # Number of atoms for each symbol
direct                           # "direct" for reduced coordinates or "cartesian".
0.000000 0.000000 0.0 Mg         # Coordinates followed by the chemical symbol of the atom.
0.333333 0.666667 0.5 B
0.666667 0.333333 0.5 B


A positive scaling factor can be used to rescale the lattice vectors whereas a negative value is interpreted as the volume of the unit cell in Angstrom**3. Obviously, zero is not allowed!

The typat variable is automatically initialized from the list of chemical symbols according to their position in the list. In this example, Mg is of type 1 while B is of type 2.

The ABINIT variables associated to this POSCAR are therefore:

ntypat 2
typat 1 2 2
znucl  12.0   5.0


These are the ONLY QUANTITIES that are initialized from the external POSCAR so please make sure that your POSCAR resembles the example given above and do not expect ABINIT to understand other entries such as Selective dynamics or velocities.

Important

Several POSCAR files available on the internet give atomic positions and lattice vectors with ~6 digits. The ABINIT routines use tighter tolerances to detect the space group thus it may happen that ABINIT does not detect all the symmetry operations with a consequent INCREASE of the number of k-points in the IBZ and the associated computational cost. This is especially true for hexagonal or rhombohedral lattices. A possible solution is to increase the value of tolsym in the input file to e.g. 1e-4 so that ABINIT will automatically refine the atomic positions.

Note the following important remarks:

• The structure is initialized by the parser at the very beginning of the calculation hence the external files must exist when Abinit starts to analyze the input file. In a nutshell, structure variables cannot be used to pass the output geometry from one dataset to the next one.

• Multidatasets are supported but mind that some variables such as ntypat, typat and znucl are tagged as NO_MULTI. In other words, one can read different files via structure and the multidatset syntax provided these quantities do not change. ABINIT syntax such as xred+ are, obviously, not supported.

• The value of typat and znucl given in the input file (if any) is ignored by the parser. The value of natom, ntypat is checked for consistency.

• As a rule of thumb, do not try to mix the two approaches: either use structure or the standard (more verbose) approach based on ntypat, typat and znucl to define the unit cell.

Limitations:

• The specification of structures for calculations with images is not supported.
• Alchemical mixing is not supported.
• Reading structure from Fortran file is not yet implemented. It is just a technical problem that will be hopefully solved in the next releases.

In all these cases in which the structure variable is not supported, one has to resort to the standard approach to define the list of atoms and their type.

## symrel¶

Mnemonics: SYMmetry in REaL space
Mentioned in topic(s): topic_crystal
Variable type: integer
Dimensions: (3,3,nsym)
Default value: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] if nsym == 1, None otherwise.

Added in version: before_v9

Test list (click to open). Moderately used, [188/1053] in all abinit tests, [1/133] in abinit tutorials

Gives “nsym” 3x3 matrices expressing space group symmetries in terms of their action on the direct (or real) space primitive translations. It turns out that these can always be expressed as integers. Always give the identity matrix even if no other symmetries hold, e.g. symrel 1 0 0 0 1 0 0 0 1.

Also note that for this array, as for all others, the array elements are filled in a columnwise order as is usual for Fortran. Explicitly, symrel 1 0 0 -1 -1 0 0 0 1 for symmetry operation isym is stored internally as symrel(1,1,isym)=1, symrel(1,2)=-1, … The atom located at xred(1:3) is send to location xred_sym(jj)=symrel(jj,1,isym)*xred(1)+symrel(jj,2,isym)*xred(2)+symrel(jj,3,isym)*xred(3)+tnons(jj).

The relation between the above symmetry matrices symrel , expressed in the basis of primitive translations, and the same symmetry matrices expressed in cartesian coordinates, is as follows. Denote the matrix whose columns are the primitive translations as R, and denote the cartesian symmetry matrix as S. Then symrel = R(inverse) * S * R where matrix multiplication is implied. When the symmetry finder is used (see nsym), symrel will be computed automatically. Also see the accompanying input variables tnons and symafm, for the full definition of the symmetry operations. Such variables are used to infer spgroup, spgroupma and genafm if they are not user-defined.

## tnons¶

Mnemonics: Translation NON-Symmorphic vectors
Mentioned in topic(s): topic_crystal
Variable type: real
Dimensions: (3,nsym)
Default value: None
Added in version: before_v9

Test list (click to open). Moderately used, [202/1053] in all abinit tests, [6/133] in abinit tutorials

Gives the (nonsymmorphic) translation vectors associated with the symmetries expressed in “symrel”. These may all be 0, or may be fractional (nonprimitive) translations expressed relative to the real space primitive translations (so, using the “reduced” system of coordinates, see “xred”). If all elements of the space group leave 0 0 0 invariant, then these are all 0. When the symmetry finder is used (see nsym), tnons is computed automatically.

For the ground-state and DFPT drivers of ABINIT, the value of tnons is unrestricted. However, for GW and BSE, the symmetry operations must leave the FFT grid invariant. Preparatory (Ground-state) runs must also use the same atomic geometry, hence the same tnons. As ABINIT cannot guess whether the user has in mind to do a GW or BSE run after the GS run, a conservative approach is implemented, requiring such match of symmetry operations and FFT grid also in the GS case. See more details in the section describing the input variable chksymtnons.

See also symafm for the complete description of the symmetry operation.

## toldfe¶

Mnemonics: TOLerance on the DiFference of total Energy
Characteristics: ENERGY
Mentioned in topic(s): topic_SCFControl
Variable type: real
Dimensions: scalar
Default value: 0.0
Comment: The default value implies that this stopping condition is ignored. For the SCF case, one and only one of the input tolerance criteria tolwfr, toldff, tolrff, toldfe or tolvrs must differ from zero.
The use of this variable forbids the use of: tolwfr or toldff or tolrff or tolvrs
Added in version: before_v9

Test list (click to open). Moderately used, [321/1053] in all abinit tests, [50/133] in abinit tutorials

Sets a tolerance for absolute differences of total energy that, reached TWICE successively, will cause one SCF cycle to stop (and ions to be moved). Can be specified in Ha (the default), Ry, eV or Kelvin, since toldfe has the ENERGY characteristics (1 Ha = 27.2113845 eV). If set to zero, this stopping condition is ignored. Effective only when SCF cycles are done (iscf>0). Because of machine precision, it is not worth to try to obtain differences in energy that are smaller than about 1.0d-12 of the total energy. To get accurate stresses may be quite demanding. When the geometry is optimized (relaxation of atomic positions or primitive vectors), the use of toldfe is to be avoided. The use of toldff or tolrff is by far preferable, in order to have a handle on the geometry characteristics. When all forces vanish by symmetry (e.g. optimization of the lattice parameters of a high-symmetry crystal), then place toldfe to 1.0d-12, or use (better) tolvrs. Since toldfe , toldff, tolrff, tolvrs and tolwfr are aimed at the same goal (causing the SCF cycle to stop), they are seen as a unique input variable at reading. Hence, it is forbidden that two of these input variables have non-zero values for the same dataset, or generically (for all datasets). However, a non-zero value for one such variable for one dataset will have precedence on the non-zero value for another input variable defined generically.

## toldff¶

Mnemonics: TOLerance on the DiFference of Forces
Mentioned in topic(s): topic_SCFControl, topic_ForcesStresses
Variable type: real
Dimensions: scalar
Default value: 0.0
Comment: The default value implies that this stopping condition is ignored. For the SCF case, one and only one of the input tolerance criteria tolwfr, toldff, tolrff, toldfe or tolvrs must differ from zero.
The use of this variable forbids the use of: tolwfr or toldfe or tolrff or tolvrs
Added in version: before_v9

Test list (click to open). Moderately used, [94/1053] in all abinit tests, [10/133] in abinit tutorials